$('.order-add, .order-edit').livequery(function() {
	$('#Order_prepayment_type').change (function() {
		var choose = (':selected', $(this)).val();
		if(choose != 2) $('#Order_prepayment').closest('div').hide();
		else $('#Order_prepayment').closest('div').show();
	});
	
	var submitFlag = false;
	$('#order-add-form').submit(function() {
		var objForm = $(this);
		if(!submitFlag) {
			if(!objForm.fullValidate(true)) return false;
			else if(parseInt($('#Order_clients_price').val()) < parseInt($('#Order_our_price').val()) && !confirm('Заказ убыточный. Продолжить?')) return false; 
			else if(parseInt($('#Order_clients_price').val()) > 1.3 *  parseInt($('#Order_our_price').val()) && !confirm('Цена клиента более чем на 30% превышает нашу цену. Продолжить?')) return false; 
			$.ajax({
				dataType: 'json',
				url: W_AJAX + 'order/before_add_checking',
				type : 'POST',
				data: {
					city_from_string: $('#Order_city_from_string').val(),
					city_to_string: $('#Order_city_to_string').val(),
					e_mail: $('#Order_e_mail').val(),
					kaptcha: $('#Order_kaptcha').val(),
					driver: $('#Order_driver_string').val()
				},
				success: function(data) {console.log(data);
					var flag = true;
					if(data.city_from == 'FAIL') {
						$('#Order_city_from_string').after('<div class="userError">Нет такого города<div>'); 
						$('#Order_city_from_string').addClass('error-field');
						flag = false;
					}
					if(data.city_to == 'FAIL') {
						$('#Order_city_to_string').after('<div class="userError">Нет такого города<div>'); 
						$('#Order_city_to_string').addClass('error-field');
						flag = false;
					}
					if(data.e_mail == 'FAIL') {
						$('#Order_e_mail').after('<div class="userError">Почта уже занята<div>'); 
						$('#Order_e_mail').addClass('error-field');
						flag = false;
					}
					if(data.driver == 'FAIL') {
						$('#Order_ID_driver').after('<div class="userError">Нет такого водителя<div>'); 
						$('#Order_ID_driver').addClass('error-field');
						flag = false;
					}
					if(flag) {
						submitFlag = true;
						objForm.submit();
					}
				}
			});
			return false;
		}
	});
	
	$("body").livequery(function(){
		$(function(){
			$("input, textarea").hideErrors();
		});
	});
	
	// Загружает имя и фамилия водителя из списка в форму при редактировании/добавлении
	$('.driver-item .name').click(function(){
		var nameString = $(this).text();
		var idDriver = $(this).parent().attr('iddr');
		$('#Order_driver_string').val(nameString);
		$('#Order_ID_driver').val(idDriver);
		return false;
	});
	
	// Варианты отображения подходящих водителей
	$('.variant').click(function() {
		if(!$(this).hasClass('current')) {
			var id = $(this).attr('id');
			$('.driver-item').hide();
			
			if(id == 'all-var') {
				$('.driver-item').each(function() {
					if($(this).attr('dist') == '1' && $(this).attr('w-category') == '1') $(this).show();
				});
			}
			else if(id == 'm-var') {
				$('.driver-item').each(function(){
					if($(this).attr('w-category') == '1') $(this).show();
				});
			}
			else if(id == 'l-var') {
				$('.driver-item').each(function() {
					if($(this).attr('dist') == '1') $(this).show();
				});
			}
			$('.variant.current').removeClass('current');
			$(this).addClass('current');
		}
		return false;
	});
	
	// Изначально подходящих водителей фильтруем по всем параметрам
	$('.variant').eq(0).click();

	// Автосаджест водителей
	$( ".driver-field" ).autocomplete({
		source: function( request, response ) {
			$.ajax({
				url: W_AJAX + 'driver/autosuggest',
						dataType: "jsonp",
						type : 'POST',
						data: {
							nameStartWith: request.term
						},
						success: function( data ) {
							response( $.map( data.driversArray, function( item ) {
								lastSuggestResult = data.driversArray;
								return {
									label: item.last_name + ' ' + item.first_name,
									value: item.last_name + ' ' + item.first_name,
									id: item.ID_driver
								}
							}));
						}
			});
		},
		minLength: 2,
		select: function( event, ui ) {
			$(this).parent().next().val(ui.item.id);
		},
		change: function( event, ui ) {
		}
	});
	
	$(".driver-card-link").live('mouseenter mouseleave', function(e) {
		if(e.type == 'mouseenter') $(this).parent().append('<div class="status-hint">Карточка водителя</div>');
		else $('.status-hint').remove();
	});
	
	 $.datepicker.regional['ru'] = {
             closeText: 'Закрыть',
             prevText: '',
             nextText: '',
             monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь',
             'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
             monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',
             'Июл','Авг','Сен','Окт','Ноя','Дек'],
             dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'],
             dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'],
             dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
             weekHeader: 'Не',
             firstDay: 1,
             isRTL: false,
             showMonthAfterYear: false,
             yearSuffix: ''};
    $.datepicker.setDefaults($.datepicker.regional['ru']);
	$('.with-date').datepicker({
	      numberOfMonths: 2,
	      minDate: 1,
	      dateFormat: "yy-mm-dd",
	      
	    });
});

$('.order-list').livequery(function() {
	$(".order").click( function(event) {
		clickedElement=event.target||event.srcElement; 
		if (clickedElement.tagName != 'A') {
			url = W_ABSPATH + 'orders/' + $(this).attr('id');
			location.href = url;
		}
	});
	$(".order").bind('mouseenter mouseleave', function(e) {
		if(e.type == 'mouseenter') $('.edit-icon', $(this)).css('opacity', '1');
		else $('.edit-icon', $(this)).css('opacity', '0');
	});
});

$('.order-page').livequery(function() {
	routeMap.init();
	
	if($('#order-controls').length)	adminControls.init();
	else adminControls.hints();
	
	$('#order-controls input:checkbox').bind('change', function(e) {
		var clickedElement = $(e.target) || $(e.srcElement);
		
	});
	
	
	// Кнопка "Написать сообщение"
	$(".comment-link").click(function(event) {
		$(this).hide();
		$(".comment-form").slideDown(600);
		event.stopPropagation();
	});
	
	function hideCommentForm() {
		$(".comment-form").hide();
		$(".comment-link").show();
		// на случай свёртывания поля, содержащего ошибки
		$('.userError').remove();
		$('.comment-form textarea').removeClass('error-field');
	}
	
	// Появление/скрытие формы и кнопки "Написать сообщение"
	$('body').click(function(event){
		var block = $(event.target).closest('.comment-form');
		if(!block.length ){
			hideCommentForm();
		}
	});
	
	// Коммент к заказу
	$('.comment-form form').submit(function() {
		var objForm = $(this);
		if(objForm.fullValidate()) {
			if(!$('#OrderComment_comment-attach').val()) { // Если нет аттача добавляем коммент на аяксе
				$.ajax({
					dataType: 'json',
					url: W_AJAX + 'order/comment',
					type: 'POST',
					data: {
						text: $('#OrderComment_text',objForm).val(),
						ID_user: $('#OrderComment_ID_user',objForm).val(),
						ID_order: $('#OrderComment_ID_order',objForm).val(),
						file: $('#OrderComment_comment-attach',objForm).val()
					},
					success: function(data) {
						if(data.result == 'OK') {
							hideCommentForm();
							objForm.parent().next().append(data.newCommentBLock);
							$('textarea',objForm).val('');
							console.log(data.post);	
						}
					}	
				});
				$('.userError').remove();
			}
			else { // Если есть аттач перезагружаем форму
				return true;
			}
		}
		return false;
		
	});
});

adminControls = {
		options : {
				clientAgree : false,
				canceled : false,
				loaded : false,
				unloaded: false,
				commentText : ''
		},
		changingOption : '',
		
		init : function() {
			var self = this;
			if($('.statuses .client_agree').length) self.options.clientAgree = true;
			if($('.statuses .canceled').length) self.options.canceled = true;
			if($('.statuses .loaded').length) self.options.loaded = true;
			if($('.statuses .unloaded').length) self.options.unloaded = true;
			self.hints();
			
			$("#order-controls").bind('mouseenter mouseleave', function(e) {
				$(".drop-block", $(this)).toggleClass('active', e.type == 'mouseenter');
			});
			
			
			$(".drop-block label").live("click mouseenter mouseleave",function(e) {
				switch (e.type) {
				case 'click' :
						self.requestTochangeOption($(this));
					break;
				case 'mouseenter' :
					if (!$(this).hasClass('choosen-label')) $(this).addClass('hover-label');
					break;
				case 'mouseleave' :
					if (!$(this).hasClass('choosen-label')) $(this).removeClass('hover-label');
					break;
				}
			});
			
			$('#canceled-save').click(function() {
				var commentText = $('.canceled-comment textarea').val();
				if(commentText != '' && commentText.length < 2048) {
					self.commentText = commentText;
					self.request();
				}
				else alert('Комментарий от 1 до 2048 символов');
			});
		},
		
		hints: function() {
			var self = this;
			$(".status_item").live('mouseenter mouseleave', function(e) {console.log(1);
				if(e.type == 'mouseenter') {
					element = $(e.target) || $(e.srcElement);
					self.showHint(element);
				}
				else self.hideHint();
			});
		},
		
		showHint: function(element) {
			var hintText = '';
			if(element.hasClass('client_agree')) hintText = 'Клиент согласен работать';
			else if(element.hasClass('canceled')) hintText = 'Заказ отменён: ' + $('.hint-text', $('.statuses .icon-wrap').eq(1)).text();
			else if(element.hasClass('loaded')) hintText = 'Груз загружен';
			else if(element.hasClass('unloaded')) hintText = 'Груз выгружен';
			else if(element.hasClass('client-pay')) hintText = 'Заказ оплачен клиентом';
			else if(element.hasClass('driver-pay')) hintText = 'Оплачено водителю';
			if(hintText != '') {
				element.parent().append('<div class="status-hint">' + hintText + '</div>');
			}
		},
		
		hideHint: function() {
			$('.status-hint').remove();
		},
		
		
		requestTochangeOption: function(element) {
			self = this;
			console.log(1);
			this.changingOption = element.attr('for');
			if(this.changingOption != 'canceled' || this.changingOption == 'canceled' && this.options.canceled) {
				console.log(22);
				element.removeClass('hover-label');
				this.request();
			}
			else {
				$('.canceled-comment').toggleClass('active');
			}
		},
		
		changeOption : function(actions) {
			var self = this;
			if(actions.type == 'add') {
				this.options[this.changingOption] = true;
				$('#' + this.changingOption).next().toggleClass('choosen-label');
			}
			else {
				this.options[this.changingOption] = false;
				$('#' + this.changingOption).next().toggleClass('choosen-label');
			}
			switch (this.changingOption) {
			case 'client_agree' :
				if(actions.type == 'add') {
					$('.statuses .icon-wrap').eq(0).append('<div class="status_item client_agree"></div>');
					$('#canceled-save').parent().after(actions.new_button);
				}
				else if (actions.type == 'del') {
					$('#loaded, #unloaded, #driver-pay, #client-pay').parent().remove();
					$('.client_agree, .loaded, .unloaded, .client-pay, .driver-pay').remove();
				}
				break;
			case 'canceled' :
				if(actions.type == 'add') {
					$('.statuses .icon-wrap').eq(1).append('<div class="status_item canceled"></div><div class="hint-text">' + self.commentText + '</div>');
					$('.canceled-comment').toggleClass('active');
					$('.canceled-comment textarea').val('');
				}
				else if (actions.type == 'del') $('.canceled, .hint-text').remove();
				break;
			case 'loaded' :
				if(actions.type == 'add') {
					$('.statuses .icon-wrap').eq(2).append('<div class="status_item loaded"></div>');
					$('#loaded').parent().after(actions.new_button);
				}
				else if (actions.type == 'del') {
					$('.loaded,.unloaded').remove();
					$('#unloaded').parent().remove();
				}
				break;
			case 'unloaded' :
				if(actions.type == 'add') {
					$('.statuses .icon-wrap').eq(3).append('<div class="status_item unloaded"></div>');
				}
				else if (actions.type == 'del') {
					$('.unloaded').remove();
				}
				break;
			case 'client-pay' :
				if(actions.type == 'add') {
					$('.statuses .icon-wrap').eq(4).append('<div class="status_item client-pay"></div>');
				}
				else if (actions.type == 'del') {
					$('.client-pay').remove();
				}
				break;
			case 'driver-pay' :
				if(actions.type == 'add') {
					$('.statuses .icon-wrap').eq(5).append('<div class="status_item driver-pay"></div>');
				}
				else if (actions.type == 'del') {
					$('.driver-pay').remove();
				}
				break;
			case 'call-to-client' :
				if(actions.type == 'add') {
					//$('.statuses .icon-wrap').eq(3).append('<div class="status_item unloaded"></div>');
				}
				else if (actions.type == 'del') {
					//$('.unloaded').remove();
				}
				break;
			}
		},
		
		request : function() {
			var self = this; 
			option = self.changingOption;
			console.log(option);
			$.ajax({
				dataType: 'json',
				url: W_AJAX + 'order/admin-controls',
				type: 'POST',
				data: {
					ID_order: $('#ID_order').val(),
					requestType: option,
					commentText : self.commentText
				},
				success: function(data) {
					console.log(data);
					if(data.result == 'OK') self.changeOption(data.actions);
				}	
			});
		}
		
}